package com.winning.pmph.utils;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class ListDivisionUtil {

    /**
     * @param list
     * @param maxNumber 分割后每个List的size
     * @param <T>       声明此方法持有一个类型T,也可以理解为声明此方法为泛型方法
     * @return
     */
    public static <T> List<List<T>> divisionList(List<T> list, int maxNumber) {
        int limit = (list.size() + maxNumber - 1) / maxNumber;
        //方法一：使用流遍历操做
        List<List<T>> mglist = new ArrayList<>();
        Stream.iterate(0, n -> n + 1).limit(limit).forEach(i -> {
            mglist.add(list.stream().skip(i * maxNumber).limit(maxNumber).collect(Collectors.toList()));
        });
        return mglist;
    }
}
